package com.yeren.queue;
import java.util.LinkedList;
import java.util.Queue;
/**
 * 1.队列(Queue)：是常用的数据结构，可以将队列看场特殊的线性表，
 *   队列限制了对线性表的访问方式：只能从线性表的一端添加（offer）元素，从
 *   另一端取出（Poll）元素。
 * 2.存储一组数据 存取元素必须遵循先进先出原则 
 *   (FIFO First Input First Output)
 * 3.JDK中提供了Queue接口，同时使得LinkList实现Queue的原因在于Queue
 *   经常要进行添加和删除的操作，而LinkList在这方面效率较高。
 * @author Administrator
 */
public class QueueDemo1 {
	public static void main(String[] args) {
		//java.util.Queue
		Queue<String> queue=new LinkedList<String>();
		/*
		 * 入队方法offer:
		 * boolean offer(E e)
		 * 将一个对象添加至队尾，如果添加成功则返回true
		 */
		queue.offer("a");
		queue.offer("b");
		queue.offer("c");
		queue.offer("d");
		queue.offer("e");
		System.out.println(queue);//[a, b, c, d, e]
		/*
		 * peek方法：
		 * 若我们仅仅希望引用队首元素，而不希望该元素出队，可以调用peek方法
		 * E peek()
		 * 返回队首删的元素（但并不删除）。
		 */
		String str=queue.peek();
		System.out.println(str);//a
		System.out.println(queue);//[a, b, c, d, e]
		/*
		 * 出队方法poll():
		 * E poll()
		 * 从队首删除并返回一个元素。
		 */
		String str1=queue.poll();
		System.out.println(str1);//a
		System.out.println(queue);//[b, c, d, e]
		
		for(int i=queue.size();i>0;i--){
			String s=queue.poll();
			System.out.println(s);
		}
		System.out.println(queue);
		//b
		//c
		//d
		//e
		//[]
		/*
		 * 还可以用while(queue.size()>0)和for(;queue.size()>0;)遍历
		 */
	}
}
